package jm.nj.demo09mian.demo03;

/*
 * 可变(的形式)参数:JDK1.5之后出现的新特性
 *
 * 使用前提:方法参数的数据类型确定,但是参数的个数不确定,可以使用可变参数
 *
 * 格式:
 * 修饰符  返回值类型 方法名(数据类型...变量名){
 * }
 *  可变参数可以看成一个数组,传递不同个数的参数,会创建不同长度的数组
 *
 * 调用方法为可变参数的方法时:可以补传参数,也可以传1个,还可以传多个
 *
 * */
public class Demo01VarArgs {
    public static void main(String[] args) {
        //调用参数是可变参数的方法
        int sum = add(1, 2, 3, 5, 6, 7, 8, 9);
        System.out.println(sum);
    }
/*
* 可变参数的注意事项
*1.一个方法中只能有一个可变参数
*           public static int method(int...arr,int...arr){}X
	        public static int method(int...arr,String...arr){}X
    2.如果方法中除了可变参数还有其它的普通参数,普通的参数必须写在可变参数前边

        public static void method(int a,int...arr){}
        * public static void method(int a ,int...arr)
        *
        * 3.可变参数的终极写法(了解)
	//public static Object method(Object...obj){}
	* public static Object method(Object...obj){}
* */


    /*
     * 定义方法计算10个整数的和
     * 方法的参数是一个可变数组,可以接收多个参数(不传,1,2.....n)
     */
    public static int add(int... arr) {
        System.out.println(arr);
        System.out.println(arr.length);
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    /*
     *  定义方法计算10个整数的和
     * */
   /* private static int add(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }


    public static int add(int a, int b, int t) {
        return a + b + t;
    }

    public static int add(int a, int b) {
        return a + b;
    }

}*/
}